package com.kuaidi100.sdk.request.corder;

/**
 * @Author: api.kuaidi100.com
 * @Date: 2020-10-27 15:47
 */
public class COrderReq {
    /**
     * 快递公司的编码，一律用小写字母，见《快递公司编码》
     */
    private  String kuaidicom;
    /**
     * 收件人姓名
     */
    private String recManName;
    /**
     * 收件人的手机号，手机号和电话号二者其一必填
     */
    private String recManMobile;
    /**
     * 收件人所在完整地址，如广东深圳市深圳市南山区科技南十二路2号金蝶软件园
     */
    private String recManPrintAddr;
    /**
     * 寄件人姓名
     */
    private String sendManName;
    /**
     * 寄件人的手机号，手机号和电话号二者其一必填
     */
    private String sendManMobile;
    /**
     * 寄件人所在的完整地址，如广东深圳市深圳市南山区科技南十二路2号金蝶软件园B10
     */
    private String sendManPrintAddr;
    /**
     * 物品名称,例：文件
     */
    private String cargo;
    /**
     * 物品总重量KG，例：1.5，单位kg
     */
    private String weight;
    /**
     * 备注
     */
    private String remark;
    /**
     * 签名用随机字符串
     */
    private String salt;
    /**
     * callBackUrl订单信息回调
     */
    private String callBackUrl;
    /**
     * 预约日期，例如：今天/明天/后天
     */
    private String dayType;
    /**
     * 预约起始时间（HH:mm），例如：09:00
     */
    private String pickupStartTime;
    /**
     * 预约截止时间（HH:mm），例如：10:00
     */
    private String pickupEndTime;
    /**
     * 支付方式，SHIPPER: 寄付（默认），CONSIGNEE: 到付
     */
    private String payment;
    /**
     * 产品类型
     */
    private String expType;
    /**
     * 是否开启订阅功能 0：不开启(默认) 1：开启 说明开启订阅功能时：pollCallBackUrl必须填入 此功能只针对有快递单号的单
     */
    private String op;
    /**
     * 如果op设置为1时，pollCallBackUrl必须填入，用于跟踪回调
     */
    private String pollCallBackUrl;
    /**
     * 添加此字段表示开通行政区域解析功能 。
     * 0：关闭（默认）
     * 1：开通行政区域解析功能以及物流轨迹增加物流状态名称
     * 4：开通行政解析功能以及物流轨迹增加物流高级状态名称、状态值并且返回出发、目的及当前城市信息(详见：快递信息推送接口文档)
     */
    private String resultv2;

    public String getKuaidicom() {
        return kuaidicom;
    }

    public void setKuaidicom(String kuaidicom) {
        this.kuaidicom = kuaidicom;
    }

    public String getRecManName() {
        return recManName;
    }

    public void setRecManName(String recManName) {
        this.recManName = recManName;
    }

    public String getRecManMobile() {
        return recManMobile;
    }

    public void setRecManMobile(String recManMobile) {
        this.recManMobile = recManMobile;
    }

    public String getRecManPrintAddr() {
        return recManPrintAddr;
    }

    public void setRecManPrintAddr(String recManPrintAddr) {
        this.recManPrintAddr = recManPrintAddr;
    }

    public String getSendManName() {
        return sendManName;
    }

    public void setSendManName(String sendManName) {
        this.sendManName = sendManName;
    }

    public String getSendManMobile() {
        return sendManMobile;
    }

    public void setSendManMobile(String sendManMobile) {
        this.sendManMobile = sendManMobile;
    }

    public String getSendManPrintAddr() {
        return sendManPrintAddr;
    }

    public void setSendManPrintAddr(String sendManPrintAddr) {
        this.sendManPrintAddr = sendManPrintAddr;
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public String getWeight() {
        return weight;
    }

    public void setWeight(String weight) {
        this.weight = weight;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getSalt() {
        return salt;
    }

    public void setSalt(String salt) {
        this.salt = salt;
    }

    public String getCallBackUrl() {
        return callBackUrl;
    }

    public void setCallBackUrl(String callBackUrl) {
        this.callBackUrl = callBackUrl;
    }

    public String getDayType() {
        return dayType;
    }

    public void setDayType(String dayType) {
        this.dayType = dayType;
    }

    public String getPickupStartTime() {
        return pickupStartTime;
    }

    public void setPickupStartTime(String pickupStartTime) {
        this.pickupStartTime = pickupStartTime;
    }

    public String getPickupEndTime() {
        return pickupEndTime;
    }

    public void setPickupEndTime(String pickupEndTime) {
        this.pickupEndTime = pickupEndTime;
    }

    public String getPayment() {
        return payment;
    }

    public void setPayment(String payment) {
        this.payment = payment;
    }

    public String getExpType() {
        return expType;
    }

    public void setExpType(String expType) {
        this.expType = expType;
    }

    public String getOp() {
        return op;
    }

    public void setOp(String op) {
        this.op = op;
    }

    public String getPollCallBackUrl() {
        return pollCallBackUrl;
    }

    public void setPollCallBackUrl(String pollCallBackUrl) {
        this.pollCallBackUrl = pollCallBackUrl;
    }

    public String getResultv2() {
        return resultv2;
    }

    public void setResultv2(String resultv2) {
        this.resultv2 = resultv2;
    }

    public static COrderReqBuilder newBuilder() {
        return new COrderReqBuilder();
    }

    public static final class COrderReqBuilder {
        private String kuaidicom;
        private String recManName;
        private String recManMobile;
        private String recManPrintAddr;
        private String sendManName;
        private String sendManMobile;
        private String sendManPrintAddr;
        private String cargo;
        private String weight;
        private String remark;
        private String salt;
        private String callBackUrl;
        private String dayType;
        private String pickupStartTime;
        private String pickupEndTime;
        private String payment;
        private String expType;
        private String op;
        private String pollCallBackUrl;
        private String resultv2;

        private COrderReqBuilder() {
        }

        public static COrderReqBuilder aCOrderReq() {
            return new COrderReqBuilder();
        }

        public COrderReqBuilder withKuaidicom(String kuaidicom) {
            this.kuaidicom = kuaidicom;
            return this;
        }

        public COrderReqBuilder withRecManName(String recManName) {
            this.recManName = recManName;
            return this;
        }

        public COrderReqBuilder withRecManMobile(String recManMobile) {
            this.recManMobile = recManMobile;
            return this;
        }

        public COrderReqBuilder withRecManPrintAddr(String recManPrintAddr) {
            this.recManPrintAddr = recManPrintAddr;
            return this;
        }

        public COrderReqBuilder withSendManName(String sendManName) {
            this.sendManName = sendManName;
            return this;
        }

        public COrderReqBuilder withSendManMobile(String sendManMobile) {
            this.sendManMobile = sendManMobile;
            return this;
        }

        public COrderReqBuilder withSendManPrintAddr(String sendManPrintAddr) {
            this.sendManPrintAddr = sendManPrintAddr;
            return this;
        }

        public COrderReqBuilder withCargo(String cargo) {
            this.cargo = cargo;
            return this;
        }

        public COrderReqBuilder withWeight(String weight) {
            this.weight = weight;
            return this;
        }

        public COrderReqBuilder withRemark(String remark) {
            this.remark = remark;
            return this;
        }

        public COrderReqBuilder withSalt(String salt) {
            this.salt = salt;
            return this;
        }

        public COrderReqBuilder withCallBackUrl(String callBackUrl) {
            this.callBackUrl = callBackUrl;
            return this;
        }

        public COrderReqBuilder withDayType(String dayType) {
            this.dayType = dayType;
            return this;
        }

        public COrderReqBuilder withPickupStartTime(String pickupStartTime) {
            this.pickupStartTime = pickupStartTime;
            return this;
        }

        public COrderReqBuilder withPickupEndTime(String pickupEndTime) {
            this.pickupEndTime = pickupEndTime;
            return this;
        }

        public COrderReqBuilder withPayment(String payment) {
            this.payment = payment;
            return this;
        }

        public COrderReqBuilder withExpType(String expType) {
            this.expType = expType;
            return this;
        }

        public COrderReqBuilder withOp(String op) {
            this.op = op;
            return this;
        }

        public COrderReqBuilder withPollCallBackUrl(String pollCallBackUrl) {
            this.pollCallBackUrl = pollCallBackUrl;
            return this;
        }

        public COrderReqBuilder withResultv2(String resultv2) {
            this.resultv2 = resultv2;
            return this;
        }

        public COrderReq build() {
            COrderReq cOrderReq = new COrderReq();
            cOrderReq.setKuaidicom(kuaidicom);
            cOrderReq.setRecManName(recManName);
            cOrderReq.setRecManMobile(recManMobile);
            cOrderReq.setRecManPrintAddr(recManPrintAddr);
            cOrderReq.setSendManName(sendManName);
            cOrderReq.setSendManMobile(sendManMobile);
            cOrderReq.setSendManPrintAddr(sendManPrintAddr);
            cOrderReq.setCargo(cargo);
            cOrderReq.setWeight(weight);
            cOrderReq.setRemark(remark);
            cOrderReq.setSalt(salt);
            cOrderReq.setCallBackUrl(callBackUrl);
            cOrderReq.setDayType(dayType);
            cOrderReq.setPickupStartTime(pickupStartTime);
            cOrderReq.setPickupEndTime(pickupEndTime);
            cOrderReq.setPayment(payment);
            cOrderReq.setExpType(expType);
            cOrderReq.setOp(op);
            cOrderReq.setPollCallBackUrl(pollCallBackUrl);
            cOrderReq.setResultv2(resultv2);
            return cOrderReq;
        }
    }
}
